package moudle

import (
	"fmt"
	"sort"
)

type SysUser struct {
	// id唯一
	ID       int    `json:"id"`
	Name     string `json:"name"`
	Sex      bool   `json:"sex"`
	UserName string `json:"user_name"`
	Password string `json:"password"`
	Phone    string `json:"phone"`
	Email    string `json:"email"`
}

// 定义存储所有SysUser数组
var list []SysUser

// 初始化
func init() {

	//list = make([]SysUser, 3)  // 预先分配空间
	nameArr := []string{"张三", "里斯", "王五"}
	userNameArr := []string{"zhangsan", "lisi", "wangwu"}
	phoneArr := []string{"13526023101", "13526023102", "13526023103"}

	for i := 1; i <= 3; i++ {
		list = append(list, SysUser{
			i,
			nameArr[i-1],
			i%2 == 0,
			userNameArr[i-1],
			"123456",
			phoneArr[i-1],
			fmt.Sprintf("%s@qq.com", nameArr[i-1]), // 字符串拼接
		})
	}

}

// 返回所有用户信息
func SysUserAll() []SysUser {
	return list
}

// 新增用户
func SysUserAdd(sysUser SysUser) {
	id := maxId(list) + 1 //取当前数组中最大id
	sysUser.ID = id
	list = append(list, sysUser)
}

// 根据id 删除
func SysUserRemove(id int) {
	if id < 0 {
		return
	}
	for i, v := range list {
		if v.ID == id {
			// 执行删除
			removeIndex(i)
			break
		}
	}
}

// 获取最大id值
func maxId(list []SysUser) int {
	sort.Slice(list, func(i, j int) bool {
		return list[i].ID > list[j].ID
	})
	return list[0].ID
}

// 根据数组下标来删除元素
func removeIndex(index int) {
	if index < 0 || index >= len(list) {
		return
	}

	// 删除索引为xxx的元素
	//list = append(list[:index], list[index+1:]...)
	//fmt.Println(list)

	// copy方式删除(性能更好)
	copy(list[index:], list[index+1:])
	list = list[:len(list)-1]
}
